AlteryxでAmazon S3にあるJSONL形式のファイルからデータを取得してSlackに投稿する
こんにちは、スズです。
先日、Amazon AppFlowを使ってS3にZendeskのチケット情報の出力を試してみました。
今回は、S3に出力したチケット情報をSlackに出力したい!ということで、Alteryx Designerを使ってS3からデータの取得とSlackへの投稿を試してみました。
環境
本エントリの執筆には以下の環境を使用しています。
- Windows 10 Pro
- Alteryx Designer Admin版 2020.1.2.24185 日本語
SlackのIncoming Webhookを準備
まずはSlackのIncoming Webhookを用意します。Slackのヘルプセンターや、当ブログのエントリを参考にして準備しました。
準備したIncoming Webhookがこちら。
S3のファイルからデータを取得してSlackに投稿
今回取得するファイルには、以下のデータが用意されています。
{"subject":"テスト","description":"チケットテスト","status":"open","created_at":"2020-04-27T08:02:03Z"} {"subject":"テスト2","description":"チケットテストセカンド","status":"open","created_at":"2020-04-27T08:22:35Z"} {"subject":"SUN","description":"チケットテストサード","status":"open","created_at":"2020-04-27T08:23:10Z"} {"subject":"よっつめ","description":"チケットテストフォース","status":"open","created_at":"2020-04-27T08:24:42Z"} {"subject":"5","description":"チケットテスト5","status":"open","created_at":"2020-04-27T08:25:08Z"}
このJSONL形式のファイルをAmazon S3ダウンロードツールを使ってデータを取得します。ツールの設定には、AWSアクセスキーやAWSシークレットキーといった各項目を設定します。この時、ファイル形式にJSONを指定すると、取得するデータが最初の1行のみになってしまいます。
全てのデータを取得するため、ファイル形式はCSVを指定しました。また区切り文字はダブルクォーテーションを指定していますが、この後に整えやすい形でデータを取得できる区切り文字を指定するといいかと思います。
Slackにテキストを投稿するためには、{"text":"<テキスト>"}
というJSON形式に整える必要があります。今回作成したワークフローの以下の赤枠部分でデータを整えています。
このワークフローの処理の概要はこちら。
- レコードIDツールでIDを付与
- 転置ツールで縦持ちに変換
- フィルターツールで波括弧を削除
- クロスタブツールで同じIDのレコードを連結
- 転置ツールで縦持ちに変換
- フォーミュラツールでデータを整形
以下のようにデータを整えました。各レコードに分けて{"text":"<テキスト>"}
を用意しています。
SlackのIncoming Webhookは、テキスト入力ツールに入力して用意します。
フィールド付加ツールを使って、Incoming Webhookのフィールドと、Slackに投稿するテキストのフィールドを結合します。これで、Slackに投稿するテキストと投稿先のURLのフィールドを持つデータを作成できました。
Slackへの投稿はダウンロードツールを使用します。Slackに投稿する際のダウンロードツールの設定については、以前執筆したエントリを参照しました。
ダウンロードツールの設定の概要はこちら。
- 基本設定タブ
- URL: Incoming WebhookのURLがあるフィールドを指定
- URLテキストをエンコードするを選択
- 出力: Blob
- ヘッダータブ
- 名前: Content-Type
- 値: application/json
- ペイロードタブ
- HTTPアクション: POST
- フィールドからクエリ文字列/本文を取得する: Slackに投稿するテキストのフィールドを指定
ワークフローを実行します。ダウンロードツールの結果を見ると、DownloadHeadersフィールドにHTTP/1.1 200 OKと出力されているので、成功しているようです。
Slackで投稿先のチャンネルを確認すると、しっかり出力されていました。
なお、今回のワークフローでは5つのレコードを用意しているため、Slackにも5つのコメントが投稿されています。もし1つのコメントとしてまとめたい場合は、1つのレコードの{"text":"<テキスト>"}
の中に全てのテキストをまとめる必要があります。
最後に
Alteryx Designerを使って、Amazon S3にあるJSONL形式のファイルからデータを取得してSlackに投稿してみました。
今回はS3からSlackへの投稿のテストのため、元のデータにあるsubjectなどをそのままにしています。この辺りは分かりやすいテキストに変更して投稿すると、どんなチケットが来たか見やすくなりそうですね。
Alteryxの導入なら、クラスメソッドにおまかせください
日本初のAlteryxビジネスパートナーであるクラスメソッドが、Alteryxの導入から活用方法までサポートします。14日間の無料トライアルも実施中ですので、お気軽にご相談ください。